Software application users conceive of applications differently from application developers. Application users often prefer to think of applications as bundles of functionality independent of implementation details. Diametrically opposed to application users are software application developers who by definition are steeped in implementation details. However, with the proliferation of client devices, application users presently track application behavior specific not only to a particular device, but to a particular set of hardware features comprising a device. With the proliferation of operating systems and operating system versions, application users also presently track their particular set of software features comprising their operating system.
Vendors have attempted to simplify this state of affairs by defining a notion of a platform. A platform is a family of devices and/or operating systems with features in common. As an example, a vendor may sell the same mobile phone in two versions, the first with a slide-out keyboard, and the second with a virtual keyboard on a touch-screen. The two versions of the mobile phone might have the same operating system. While the two versions might be considered the same platform, an application might run differently on the two phones depending on keyboard type. Similarly, two devices from the same vendor, with exactly the same hardware features might have different service packs of the same operating system. Despite the potential for different application behavior on the basis of the service packs, the two devices would still be considered the same platform. Accordingly, application users have come to abstract away implementation details by associating applications with a particular platform.
It is not unusual for a user to run the same software on different platforms. For example, a user might have a home personal computer (PC) running one operating system, and a work PC running another operating system. The same person might possess a cell phone running a third operating system and a pad device running a fourth operating system. This same user may wish to view the same document on any of these client devices, and because of the differing form factors and operating systems, the user experience may widely vary.
An example of how user experience can vary widely across multiple platforms despite nominally running the same application is a user that wishes to view a Microsoft Word™ 2003 document. The user may have originally authored the document on a work PC running Microsoft Word™ 2003 on the Microsoft XP™ operating system. The user may have distributed the document and then received revisions from a co-worker in email. If the user was in transit, the user might look at the document on his smart phone running Word Mobile™. In all three examples, the user is reviewing the same content, all on some form of Microsoft Word™, but having different user experience quality due to the different client devices, and operating system versions.
In the case of mobile devices, it is typical for the same version of the same application to be running on slightly different devices. For example, the same application may run on two mobile phones, both with the same operating system, yet because the first phone has a slide-out keyboard but the second phone relies on a virtual keyboard on a touch-screen, the user experience is different. By way of another example, the same application may run on two phones, both with the same make, model and feature set. However, while the application runs full featured on the first phone since it has version 2 of an operating system, the application may run in compatibility mode with a partial feature on the second phone since it has version 1 of the operating system.
Because there is no existing framework to associate data with a class of applications at differing levels of implementation detail, user ratings of an application that vary according to device or operating system will yield misleading results when aggregated by platform. For example an application may receive high rankings from users running devices with slide-out keyboards but low rankings from users running devices with virtual keyboards. Without a framework to associate data with a class of applications at differing levels of detail application users presently track implementation details and application developers presently tolerate customer feedback aggregated at differing, and potentially inappropriate levels of implementation detail.